package com.aididi.java8;

import java.util.function.Consumer;

/**
 * @Auther: zx.xu
 * @Description:        对传入的参数进行消费。
 *  与Supplier接口相反，它不是生产一个数据，而是消费一个数据，其数据类型由泛型决定
 */
public class ConsumerDemo {

    /**
     * 抽象方法 accept  意为消费一个指定泛型的数据
     * 默认方法 andThen
     * @param fun
     */
    private static void conStr(Consumer<String> fun) {
        fun.accept("接收数据");
    }

    private static void girl(Consumer<String> one, Consumer<String> two, String[] arr) {
        for (String s : arr) {
            one.andThen(two).accept(s);
        }
    }

    private static void con(Consumer<String> one, Consumer<String> two) {
        one.andThen(two).accept("Hello Java");
    }

    public static void main(String[] args) {
        conStr(s -> System.out.println(s.substring(3)));

        String[] arr = {
                "苍井空,女",
                "波多野结衣,女",
                "泷泽萝拉,女",
                "小泽玛利亚,女",
        };
        girl(
                (s) -> System.out.print("姓名：" + s.split(",")[0]),
                (s) -> System.out.println("；性别：" + s.split(",")[1]),
                arr
        );

        con(
                (s) -> System.out.println(s.toLowerCase()),
                (s) -> System.out.println(s.toUpperCase())
        );
    }

}
